package com.example.demo.service;

import com.example.demo.dto.UserDTO;
import com.example.demo.entity.User;
import com.example.demo.request.CreateUserRequest;
import com.example.demo.request.UpdateUserRequest;
import com.example.demo.request.LoginRequest;
import com.example.demo.response.LoginResponse;
import java.util.List;
import java.util.Map;
import org.springframework.web.multipart.MultipartFile;


public interface UserService {

    /**
     * 分页查询用户列表
     */
    List<UserDTO> getUsers(int page, int size);

    /**
     * 获取用户总数
     */
    long countUsers();

    /**
     * 根据 ID 查询用户详情
     */
    UserDTO getUserById(Integer id);

    /**
     * 创建新用户
     */
    User createUser(CreateUserRequest request);

    /**
     * 更新用户
     */
    void updateUser(Integer id, UpdateUserRequest request);

    /**
     * 删除用户
     */
    void deleteUser(Integer id);

    /**
     * 批量导入用户
     */
    Map<String, Object> batchImportUsers(MultipartFile file);
    
    /**
     * 按名称搜索用户
     */
    List<UserDTO> searchUsersByName(String name);

    /**
     * 批量导出用户数据
     * @return Excel文件的字节数组
     */
    byte[] batchExportUsers();

    /**
     * 用户登录
     */
    LoginResponse login(LoginRequest request);

    /**
     * 根据统一认证号查询用户
     */
    User getUserByAuthId(String authId);
    
    /**
     * 修改用户密码
     */
    void changePassword(Integer userId, String oldPassword, String newPassword);
    
    /**
     * 根据部门ID查询用户列表
     */
    List<UserDTO> getUsersByDeptId(Integer deptId);
}